#ifndef __NATIVEPARSER_H
#define __NATIVEPARSER_H

#include <string>
#include "parser.h"

using namespace std;

/** Native parser interface.
 * Parses numbers in numerical form (including hex and oct) and operators
 * in their pure identity.
 */
class NativeParser : public Parser {

  public: 
    /** Generic constructor.
     * Sets the name of the native parser ("native").
     */
    NativeParser();

    /** Overridden method of base class.
     * The string is read forward only.
     *
     * @see Parser#parseNum(string, size_t &amp;)
     */
    virtual Number *parseNum(string input, size_t &pos) const;
    /** Overridden method of base class.
     * The string is read forward only. Trimming any leading whitespace, only
     * the first valuable character is checked against the known operators.
     * This is another place where new operators need to be introduced.
     *
     * @see Parser#parseOp(string, size_t &amp;)
     */
    virtual char parseOp(string input, size_t &pos) const;
};

#endif
